/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gob.fonafe.service.impl;

import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import pe.gob.fonafe.dao.SubastaDAO;
import pe.gob.fonafe.domain.BienSubastaBean;
import pe.gob.fonafe.domain.BuscaSubastaBean;
import pe.gob.fonafe.domain.ClaseSubastaBean;
import pe.gob.fonafe.domain.ConsultaReclamoBean;
import pe.gob.fonafe.domain.ResultadosSubastaBean;
import pe.gob.fonafe.domain.SubastaBean;
import pe.gob.fonafe.domain.TipoSubastaBean;
import pe.gob.fonafe.service.SubastaService;

/**
 *
 * @author czela
 */
@Service
public class SubastaServiceImpl implements SubastaService{

    private static final Logger logger = Logger.getLogger(SubastaServiceImpl.class);

    @Autowired
    private SubastaDAO subastaDAO;

    public List<SubastaBean> buscaSubasta(BuscaSubastaBean buscaSubastaBean) {
        List<SubastaBean> listaSubasta = new ArrayList<SubastaBean>();
        try{
            listaSubasta = subastaDAO.buscaSubasta(buscaSubastaBean);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        logger.info("Total Subastas Service [" + listaSubasta.size() + "]");
        return listaSubasta;
    }

    public List<BienSubastaBean> getBienesBySubasta(String idSubasta) {
        List<BienSubastaBean> listBienesBySubasta = new ArrayList<BienSubastaBean>();
        try{
            listBienesBySubasta = subastaDAO.getBienesBySubasta(idSubasta);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        logger.info("Total Bienees por Subasta [" + listBienesBySubasta.size() + "]");
        return listBienesBySubasta;
    }

    public String[] registrarConsultaReclamo(ConsultaReclamoBean consultaReclamoBean) {
        String[] outPutsConsultaReclamo = new String[2];
        try{
            outPutsConsultaReclamo = subastaDAO.registrarConsultaReclamo(consultaReclamoBean);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        logger.info("Total Outputs Service [" + outPutsConsultaReclamo.length + "]");
        return outPutsConsultaReclamo;
    }

    public String[] getOutputFileReclamoConsulta(String idConsRecl, String idSubasta, byte[] file, String nomFile, String typeFile) {
        String[] outPutsFileConsRecl = new String[2];
        try{
            outPutsFileConsRecl = subastaDAO.registraFilesConsultaReclamo(idConsRecl, idSubasta, file, nomFile, typeFile);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return outPutsFileConsRecl;
    }

    public List<SubastaBean> getListAsignaSubasta(int intIDEmpresa) {
        List<SubastaBean> listAsignaSubasta = new ArrayList<SubastaBean>();
        try{
            listAsignaSubasta = subastaDAO.listAsignaSubasta(intIDEmpresa);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return listAsignaSubasta;
    }

    public List<SubastaBean> listVersionesSubasta(int idSubasta) {
        List<SubastaBean> listaVersionesSubasta = new ArrayList<SubastaBean>();
        try{
            listaVersionesSubasta = subastaDAO.listVersionesSubasta(idSubasta);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return listaVersionesSubasta;
    }

    public List<BienSubastaBean> getListBienesSubasta(String idClase,int intIDEmpresa) {
        List<BienSubastaBean> listBiensSubasta = new ArrayList<BienSubastaBean>();
        try{
            listBiensSubasta = subastaDAO.listBienesSubasta(idClase,intIDEmpresa);
        }catch (Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return listBiensSubasta;
    }

    public List<BienSubastaBean> listBienesByVersionSubasta(String idSubasta, String version) {
        List<BienSubastaBean> listVersiones = new ArrayList<BienSubastaBean>();
        try{
            listVersiones = subastaDAO.listBienesByVersionSubasta(idSubasta, version);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return listVersiones;
    }

    public String[] registrarSubasta(String idUsuario, SubastaBean subasta, byte[] bases, String nombases, String contentTypeBase) {
        String[] outputs = new String[3];
        try{
            outputs = subastaDAO.registrarSubasta(idUsuario, subasta, bases, nombases, contentTypeBase);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return outputs;
    }

    public String[] registraBinesBySubasta(String idSubasta, String idBien, String claseSubasta,String version) {
        String[] outPuts = new String[2];
        try{
            outPuts = subastaDAO.registraBienesBySubasta(idSubasta, idBien, claseSubasta,version);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return outPuts;
    }

    public String[] eliminarSubasta(SubastaBean subastaBean) {
        String[] outPuts = new String[2];
        try{
            outPuts = subastaDAO.eliminarSubasta(subastaBean);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return outPuts;
    }

    public String[] actualizarSubasta(String idUsuario, SubastaBean subasta, byte[] bases, String nombases, String contentTypeBase) {
        String[] outPuts = new String[3];
        try{
            outPuts = subastaDAO.actualizarSubasta(idUsuario, subasta, bases, nombases, contentTypeBase);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return outPuts;
    }

    public List<BienSubastaBean> getListBienesAsociados(String idSubasta, String idClase) {
        List<BienSubastaBean> listBienesAsociados = new ArrayList<BienSubastaBean>();
        try{
            listBienesAsociados = subastaDAO.listaBienesAsociados(idSubasta, idClase);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return listBienesAsociados;
    }

    public String[] desagregarBienesSubasta(String idClase, String idBien) {
        String[] outPuts = new String[2];
        try{
            outPuts = subastaDAO.desagregarBienesSubasta(idClase, idBien);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return outPuts;
    }

    public List<TipoSubastaBean> getListTipoSubasta() {
        List<TipoSubastaBean> listTipoSubasta = new ArrayList<TipoSubastaBean>();
        try{
            listTipoSubasta = subastaDAO.listTipoSubasta();
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return listTipoSubasta;
    }

    public List<ClaseSubastaBean> getListClaseSubasta() {
        List<ClaseSubastaBean> listClaseSubasta = new ArrayList<ClaseSubastaBean>();
        try{
            listClaseSubasta = subastaDAO.listClaseSubasta();
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return listClaseSubasta;
    }

    public List<SubastaBean> ObtenerTopSubasta() {
        List<SubastaBean> listResultado = new ArrayList<SubastaBean>();
        try{
            listResultado = subastaDAO.ObtenerTopSubasta();
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return listResultado;
    }

    public List<ResultadosSubastaBean> obtenerResultados(int idSubasta) {
        List<ResultadosSubastaBean> listaResult = new ArrayList<ResultadosSubastaBean>();
        try{
            listaResult = subastaDAO.obtenerResultados(idSubasta);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return listaResult;
    }

    public List<ResultadosSubastaBean> obtenerResultadosByVersion(String idSubasta, String version) {
        List<ResultadosSubastaBean> listaResultVersion = new ArrayList<ResultadosSubastaBean>();
        try{
            listaResultVersion = subastaDAO.obtenerResultadosByVersion(idSubasta, version);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return listaResultVersion;
    }

    public String[] registrarResultados(int idSubasta, ResultadosSubastaBean bean,int version) {
        String[] outPuts = new String[2];
        try{
            outPuts = subastaDAO.registrarResultados(idSubasta, bean,version);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return outPuts;
    }




}
